package ch.connection;

/** Classe per la gestione degli stati di una connessione POP/SMTP
 * 
 * @author Giovanni Franza - GPLv3 - 8/6/2011
 *
 */

public class Action {
	private Integer stato = 0;
	private String comando = "";
	private Control verifica = null;
	private String conferma = "";
	private String errore = "";
	private Integer nuovoStato = 0;

	
	/** Constructor dell'azione .
	 *
	 * @param stato - stato in cui l'azione è valida.
	 * @param comando - comando a cui l'azione risponde.
	 * @param verifica - funzione di verifica che verrà svolta.
	 * @param post - funzione di post che verrà svolta.
	 * @param conferma - stringa di conferma (overloadabile da post).
	 * @param errore - stringa di errore
	 * @param nuovoStato - nuovo stato a cui si arriva se ok.
	 */
	
	public Action ( Integer stato, String comando, Control verifica,
			String conferma, String errore, Integer nuovoStato) {
		this.stato = stato;
		this.comando = comando.toLowerCase();
		this.verifica = verifica;
		this.conferma = conferma;
		this.errore = errore;
		this.nuovoStato = nuovoStato;
	}
	
	/** Settaggio dello stato .
	 *
	 * @param stato - stato impostato.
	 */
	
	public void setStato( Integer stato ) {
		this.stato = stato;
	}
	
	/** Settaggio del nuovo stato .
	 *
	 * @param nuovoStato - nuovo stato impostato.
	 */
	
	
	public void setNuovoStato( Integer nuovoStato ) {
		this.nuovoStato = nuovoStato;
	}

	/** getter dello stato .
	 *
	 */
	
	public Integer getStato() {
		return stato;
	}

	/** getter dello hash .
	 *
	 */
	
	public String getHash() {
		return stato.toString()+"|"+comando;
	}

	/** getter della funzione di verifica.
	 *
	 */
	
	public Control getVerifica() {
		return verifica;
	}

	/** getter della stringa di conferma.
	 *
	 */
	
	public String getConferma() {
		return conferma;
	}

	/** getter della stringa di segnalazione errore.
	 *
	 */
	
	public String getErrore() {
		return errore;
	}

	/** getter del nuovo stato.
	 *
	 */
	
	public Integer getNuovoStato() {
		return nuovoStato;
	}
}
